#include "../Basic/SystemPCH.h"
#include "../Basic/Array.h"
#include "../Basic/List.h"
#include "../Basic/DebugMessage.h"
#include "../CatRun/test.h"



// void TestArray()
// {
// 	using CAT::Array;
// 	Array<float> points(20);
// 	Array<float> consPoint = points;
// 	printf("the empty points, size is %d, capacity is %d\n ", points.Size(), points.Capacity());
// 
// 	for(int i=0; i<points.Capacity(); i++)
// 	{
// 		points.Append(i);
// 	}
// 
// 	for(int i=0; i<points.Size(); ++i)
// 	{
// 		printf("points[%d]: %f\n", i+1, points[i]);
// 	}
// 
// 	int size = points.Size();
// 	for(int i=0; i<size; ++i)
// 	{
// 		points.Remove(0);
// 	}
// 	// copy constructor
// 	Array<float> points2(points);
// 	printf("point2, size: %d, cap: %d\n", points2.Size(), points2.Capacity());
// 	printf("Set point2 cap to 10\n");
// 	points2.SetCapacity(0);
// 	printf("point2, size: %d, cap: %d\n", points2.Size(), points2.Capacity());
// }

void TestFun(int i)
{
    printf("11\n");
}

void TestTmp()
{
    TestClass<int, TestFun> A;
    A.Test();
}

void TestArraySpeed()
{
     
	std::vector<int> stlArray;
	CAT::Array<int>  myArray(5000000);
	int count = 5000000;

	StartTimer();
	for(int i=0; i<count; ++i)
		stlArray.push_back(i);
//	stlArray.empty();
	printf("stl: %d\n", EndTimer());

	StartTimer();
	for(int i=0; i<count; ++i)
		myArray.Append(i);
	printf("my: %d\n", EndTimer());
}

void TestDebugMessage()
{
    using CAT::DebugMessage;
    char testStr[] = "Jiejieup";
    StartTimer();
    DebugMessage::Print("%s\n", testStr);
    DebugMessage::Print("%d\n",EndTimer());
}






int main()
{
// 	TestArray();
// 	EnableMemLeakCheck();
// 
// 	CAT::List<int> myList;
// 	StartTimer();
// 	for( int i = 0; i<10000; ++i)
// 		myList.Append(i);
// 	EndTimer();
// 
// 	typedef CAT::List<int>::Node IntNode;
// 	StartTimer();
// 	for(CAT::List<int>::Node* node = myList.Head();node;)
// 	{
// 		//printf("%d\n", node->GetElement());
// 		node = node->GetNext();
// 	}
// 	EndTimer();
	TestDebugMessage();
	system("pause");
		
}